package com.cleaningcloud.cld.domain;

import com.cleaningcloud.common.core.annotation.Excel;
import com.cleaningcloud.common.core.web.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.Date;

/**
 * 考勤打卡对象 cld_attendance
 *
 * @author cleaningcloud
 * @date 2024-11-08
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class CldAttendance extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 考勤打卡ID
     */
    private Long attendanceId;

    /**
     * 项目ID
     */
    @Excel(name = "项目ID")
    private Long projectId;

    /**
     * 年份
     */
    @Excel(name = "年份")
    private Integer attendanceYear;

    /**
     * 月份
     */
    @Excel(name = "月份")
    private Integer attendanceMonth;

    /**
     * 周
     */
    @Excel(name = "周")
    private String attendanceWeek;

    /**
     * 天
     */
    @Excel(name = "天")
    private Integer attendanceDay;

    // 考勤时间
    private Date attendanceDate;

    /**
     * 打卡上班时间1
     */
    @Excel(name = "打卡上班时间1", width = 30, dateFormat = "HH:mm:ss")
    private LocalTime goToWorkTime1;

    /**
     * 打卡下班时间1
     */
    @Excel(name = "打卡下班时间1", width = 30, dateFormat = "HH:mm:ss")
    private LocalTime goOffWorkTime1;

    /**
     * 打卡上班时间2
     */
    @Excel(name = "打卡上班时间2", width = 30, dateFormat = "HH:mm:ss")
    private LocalTime goToWorkTime2;

    /**
     * 打卡下班时间2
     */
    @Excel(name = "打卡下班时间2", width = 30, dateFormat = "HH:mm:ss")
    private LocalTime goOffWorkTime2;

    /**
     * 打卡上班时间3
     */
    @Excel(name = "打卡上班时间3", width = 30, dateFormat = "HH:mm:ss")
    private LocalTime goToWorkTime3;

    /**
     * 打卡下班时间3
     */
    @Excel(name = "打卡下班时间3", width = 30, dateFormat = "HH:mm:ss")
    private LocalTime goOffWorkTime3;

    /**
     * 是否请假(0否1是)
     */
    @Excel(name = "是否请假(0否1是)")
    private Long isLeave;

    /**
     * 请假开始时间
     */
    @Excel(name = "请假开始时间", width = 30, dateFormat = "HH:mm:ss")
    private LocalTime leaveStartTime;

    /**
     * 请假结束时间
     */
    @Excel(name = "请假结束时间", width = 30, dateFormat = "HH:mm:ss")
    private LocalTime leaveEndTime;

    /**
     * 是否本项目加班(0否1是)
     */
    @Excel(name = "是否本项目加班(0否1是)")
    private Long isInThisProject;

    /**
     * 本项目加班上班时间
     */
    @Excel(name = "本项目加班上班时间", width = 30, dateFormat = "HH:mm:ss")
    private LocalTime thisStartTime;

    /**
     * 本项目加班下班时间
     */
    @Excel(name = "本项目加班下班时间", width = 30, dateFormat = "HH:mm:ss")
    private LocalTime thisEndTime;

    /**
     * 是否外项目加班(0否1是)
     */
    @Excel(name = "是否外项目加班(0否1是)")
    private Long isOutExtProject;

    /**
     * 外项目ID
     */
    @Excel(name = "外项目ID")
    private Long extProjectId;

    /**
     * 外项目加班上班时间
     */
    @Excel(name = "外项目加班上班时间", width = 30, dateFormat = "HH:mm:ss")
    private LocalTime extStartTime;

    /**
     * 外项目加班下班时间
     */
    @Excel(name = "外项目加班下班时间", width = 30, dateFormat = "HH:mm:ss")
    private LocalTime extEndTime;

    /**
     * 项目岗位ID
     */
    @Excel(name = "项目岗位ID")
    private Long projectPostId;

    /**
     * 员工ID
     */
    @Excel(name = "员工ID")
    private Long staffId;

    /**
     * 是否节假日(0否1是)
     */
    @Excel(name = "是否节假日(0否1是)")
    private Long isHoliday;

    // 是否休息
    private Long isRest;

    // 是否补卡记录 (0否1是)
    private Long isReplace;

    // 是否生成薪酬
    private Long isPay;

    /**
     * 是否显示(作用于小程序客户查看权限)
     */
    @Excel(name = "是否显示(作用于小程序客户查看权限)")
    private Long isDisplay;

    /**
     * 是否有效考勤(0否1是)
     */
    @Excel(name = "是否有效考勤(0否1是)")
    private Long isEffective;

    // 班次id
    private Long classesId;

    /**
     * 应上班时间1
     */
    @Excel(name = "应上班时间1", width = 30, dateFormat = "HH:mm:ss")
    private LocalTime echoGoToWorkTime1;

    /**
     * 应下班时间1
     */
    @Excel(name = "应下班时间1", width = 30, dateFormat = "HH:mm:ss")
    private LocalTime echoGoOffWorkTime1;

    /**
     * 是否次日打卡1
     */
    private Integer isNextTime1;

    /**
     * 应上班时间2
     */
    @Excel(name = "应上班时间2", width = 30, dateFormat = "HH:mm:ss")
    private LocalTime echoGoToWorkTime2;

    /**
     * 应下班时间2
     */
    @Excel(name = "应下班时间2", width = 30, dateFormat = "HH:mm:ss")
    private LocalTime echoGoOffWorkTime2;

    /**
     * 是否次日打卡2
     */
    private Integer isNextTime2;

    /**
     * 应上班时间3
     */
    @Excel(name = "应上班时间3", width = 30, dateFormat = "HH:mm:ss")
    private LocalTime echoGoToWorkTime3;

    /**
     * 应下班时间3
     */
    @Excel(name = "应下班时间3", width = 30, dateFormat = "HH:mm:ss")
    private LocalTime echoGoOffWorkTime3;

    /**
     * 是否次日打卡3
     */
    private Integer isNextTime3;

    /**
     * 加班应上班打卡时间
     */
    private LocalDateTime echoGoToWorkTimeOvertime;

    /**
     * 加班应下班打卡时间
     */
    private LocalDateTime echoGoOffWorkTimeOvertime;

    /**
     * 是否加班次日打卡
     */
    private Integer isWorkNextTime;
}
